Common types of computing devices are desktop computers and server systems. Virtualization software virtualizes underlying hardware resources of a computing device so that an operating system and applications that run in a virtual machine only see virtual system resources that the virtualization software makes available to the virtual machine. Hardware resources made available to applications running in a virtual machine, or virtual environment, may be a portion of the host system resources that are allocated to the virtual environment, such as a portion of the host memory, for example. Alternatively, some virtual system resources may be emulated virtual system resources that do not directly correspond with host system resources, such as a physical USB (Universal Serial Bus) port, with a connected USB flash memory device, being emulated as an attached SCSI (Small Computer System Interface) hard drive, for example.
Multiple virtual environments may execute on a single computing device, or host system. One or more thin layers of software may operate between each virtual environment and the underlying host system hardware. In many implementations, this software is referred to as a hypervisor, or more generically as a virtual machine monitor (VMM). The individual virtual environments are separated into logical partitions, each logical partition being isolated from other logical partitions. The underlying hardware resources may include, for example, a number of input/output (I/O) adapters, portions of processor computational resources from one or more processors, random access memory, and hard disk drives.
Computer applications that may execute within a virtual environment usually have some minimum hardware resource requirements. Such hardware resource requirements are usually specified by the software company that creates the application. Frequently the application is only certified by the software company or developer to run with that minimum set of hardware resources, since that is the minimum hardware resources that the software company or developer used to run their system product tests.
The system administrator who may need to create or modify a virtualized environment may not always be aware of the specific needs, or the amount of hardware resources recommended for all of the individual applications to be executed within the virtual environment. Further, an application may be installed in an existing virtual environment, wherein the requirements of the later-installed application may exceed the resources available to the existing environment. In other cases, the system administrator may make changes to the resources available to a virtualization environment. For example, the system administrator may dynamically change the logical partitioning of the virtual environment, reducing the available resources in the environment below the minimum amount required by, or specified for, the applications that are currently executing within the environment.